/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upn.sigemfi.vnf.beans;

import edu.upn.sigemfi.plt.be.Cuenta;
import edu.upn.sigemfi.vnf.bc.CuentaDelegate;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author Administrador
 */
public class CuentaController {

    private CuentaDelegate delegado;
    private Cuenta cuenta;

    public CuentaController(){
         delegado = new CuentaDelegate();
    }

    public CuentaDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(CuentaDelegate delegado) {
        this.delegado = delegado;
    }

    public Cuenta getCuenta() {
        return cuenta;
    }

    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }

   public List<Cuenta> getCuentas() {
        try {
            return delegado.listar();
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

 public String volver() {
        cuenta = null;
        return "volver";
    }
    public SelectItem[] getListaCuentaSI() throws Exception {
        SelectItem[] select = null;
        try {
            List<Cuenta> cuentas = delegado.listar();
            if (cuentas != null) {
                select = new SelectItem[cuentas.size() + 1];
                int i = 0;
                select[i++] = new SelectItem(null, "Seleccione una cuenta");
                for (Cuenta c : cuentas) {
                    select[i++] = new SelectItem(c.getIdCuenta(), c.getIdCuenta().toString());
                }
            } else {
                select = new SelectItem[1];
                select[0] = new SelectItem(null, "no hay cuentas registradas");
            }

        } catch (Exception e) {
            throw new Exception("Cuentas" + e.getMessage());
        }
        return select;
    }

      public Cuenta buscar_Cuenta(Long id) throws Exception {
        return buscar(id);
    }


    public Cuenta buscar(Long idCuenta) {
        try {
            return delegado.buscarPorId(idCuenta);
        } catch (Exception e) {
            mostrarMensaje(e.getMessage(), e.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return null;
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    private void error(String message) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
